Ordinary
About

Gradle 이해

profileordilov / 2022. 2. 14
Gradle

Gradle은 오픈 소스 빌드 자동화 도구입니다.

  • 고성능 (변경 부분만 실행해서 불필요한 작업 방지)
  • JVM (JDK 필요)
  • 빌드 문제 식별 (문제가 발생하면 해결 정보 제공)

Gradle에 대해 알아야 할 5가지 사항

1. Gradle은 범용 빌드 도구입니다.

Gradle은 빌드하려는 대상을 특정하지 않다고 가정합니다. 그래도 제한 사항이 있다면 의존성 관리가 Maven, Ivy와 호환되는 시스템만 지원합니다. 빌드하려면 플러그인을 추가해서 작업합니다.

2. 핵심 모델은 Task입니다.

Gradle은 비순환 그래프를 만들어서 공통적인 Task을 다시 처리하지 않습니다. Task는 3가지로 구성됩니다.

  • Actions: 작업으로 파일을 복사하거나 컴파일등의 작업
  • Inputs: 값이나, 파일, 경로처럼 Actions에서 사용하는 것
  • Outputs: 파일이나 경로들이 Actions에서 만들어지는 것

하지만 모든 Task는 위의 3가지를 선택사항으로 가집니다. 그렇기 때문에 작업도 필요한 작업만 선택해서 실행할 수 있습니다. incremental build는 안정적이고 빠른 작업에 도움되므로 clean은 꼭 필요한 때만 씁니다.

3. Gradle에는 고정 빌드 단계가 있습니다.

  1. Initialization

빌드 환경을 설정하고 어느 프로젝트를 실행할지 결정합니다.

  1. Configuration

task를 구성하고 설정하고, 실행할 task와 실행 순서를 어떻게 할지 결정합니다.

  1. Execution

선택한 task를 실행합니다.

4. Gradle은 확장 가능한 방법이 많습니다.

Task 타입을 추가하거나 action, action의 순서, convetion, model등을 추가할 수 있습니다.

5. Gradle Build Script는 API 처럼 동작합니다.

Gradle script는 실행 가능한 코드처럼 보이지만 API처럼 구현을 설명하지 않습니다. 구현 세부 사항은 플러그인에게 있고 script는 실행 단계만 설명합니다. 따라서 명령형처럼 실제 실행할 로직을 넣는 것은 피해야 합니다.